﻿using BCCommon;
using BCCommon.PaymentEnums;
using BCDto.Common.Payment.AliPayBill;
using BCDto.Common.Payment.AliPayBill.AliPayBillDetail;
using BCDto.Common.Payment.AliPayBill.AliPayBillStatistics;
using System;

namespace BCService.Common.Payment.PaymentBill.AliPayBill
{
    /// <summary>
    /// 支付宝对账单
    /// </summary>
    public interface IAliPayBillService
    {
        /// <summary>
        /// 插入微信对账单信息
        /// </summary>
        /// <param name="billDate">对账单日期（仅支持2016年1月1日开始的账单）</param>
        /// <param name="billType">对账单类型</param>
        /// <param name="url">支付宝对账单下载地址</param>
        /// <param name="appType">App类型</param>
        /// <returns></returns>
        AliPayBillDto Insert(DateTime billDate, AliPayBillType billType, string url, SourceAppType appType);

        /// <summary>
        /// 获取某一天微信对账单记录
        /// </summary>
        /// <param name="tradeDate">交易日期</param>
        /// <param name="aliPayBillType">支付宝账单类型</param>
        /// <param name="pageIndex">当前页码</param>
        /// <param name="pageSize">每页数据条数</param>
        /// <returns></returns>
        PageableList<AliPayBillDetailDto, AliPayBillStatisticsDto> GetSomeDayBill(DateTime tradeDate, AliPayBillType aliPayBillType, int pageIndex, int pageSize);

        /// <summary>
        /// 获取某一月微信对账单记录
        /// </summary>
        /// <param name="year">年</param>
        /// <param name="month">月</param>
        /// <param name="aliPayBillType">支付宝账单类型</param>
        /// <param name="pageIndex">当前页码</param>
        /// <param name="pageSize">每页数据条数</param>
        /// <returns></returns>
        PageableList<AliPayBillDetailDto, AliPayBillStatisticsDto> GetSomeMonthBill(int year, int month, AliPayBillType aliPayBillType, int pageIndex, int pageSize);

        /// <summary>
        /// 获取某一年微信对账单记录
        /// </summary>
        /// <param name="year">年</param>
        /// <param name="aliPayBillType">支付宝账单类型</param>
        /// <param name="pageIndex">当前页码</param>
        /// <param name="pageSize">每页数据条数</param>
        /// <returns></returns>
        PageableList<AliPayBillDetailDto, AliPayBillStatisticsDto> GetSomeYearBill(int year, AliPayBillType aliPayBillType, int pageIndex, int pageSize);
    }
}
